import { UserLogout } from "~/api";
import { connectSocket } from "@/utils/socket";

// 设置一个5分钟（300秒）的超时时间
const TIMEOUT = 15 * 60 * 1000;
let interval = null;

// 更新最后活动时间
function updateActivity() {
    localStorage.setItem("lastActivity", new Date().getTime());
}

// 监视用户活动
function startActivityMonitoring() {
    localStorage.setItem("lastActivity", new Date().getTime());
    document.addEventListener("mousemove", updateActivity);
    document.addEventListener("touchmove", updateActivity);
    document.addEventListener("keydown", updateActivity);
    interval = setInterval(checkActivity, 10000); // 每10秒检查一次
}

// 检查用户是否有活动
async function checkActivity() {
    const userStore = useUserStore();
    let currentTime = new Date().getTime();
    let lastActivityTime = localStorage.getItem("lastActivity") || currentTime;
    if (currentTime - lastActivityTime > TIMEOUT) {
        // 用户超时，执行登出操作
        clearInterval(interval);
        alert("15分钟内无操作，您已下线！");
        // 这里可以添加登出逻辑，例如调用API或者重定向到登录页面
        await UserLogout();
        userStore.CLEAR_USERINFO();
        connectSocket();
    }
}

// 初始化用户活动监控
export default startActivityMonitoring;
